home *** CD-ROM | disk | FTP | other *** search
/ TOS Silver 2000 / TOS Silver 2000.iso / Anwendun / Everest / SE_TEST / VAPROTO.H < prev   
Encoding:
C/C++ Source or Header  |  1996-10-12  |  8.9 KB  |  244 lines

  1. /*
  2.  * vaproto.h
  3.  *
  4.  * project: venus
  5.  *
  6.  * author: stefan eissing
  7.  *
  8.  * description: Definition der Nachrichten des Venus <-> Accessory
  9.  * Protokolls
  10.  *
  11.  * last change: 28.09.1990
  12.  */
  13.  
  14. #ifndef __vaproto__
  15. #define __vaproto__
  16.  
  17. /* Message-Nummern für das xAcc-Protokoll von Konrad Hinsen
  18.  * Venus gibt bei ACC_ID "VENUS.APP" und Gemini gibt "GEMINI.APP"
  19.  * zurück. Gemini unterstützt xAcc der Stufe 0.
  20.  */
  21. #define ACC_ID        0x400
  22. #define ACC_OPEN    0x401
  23. #define ACC_CLOSE    0x402
  24. #define ACC_ACC        0x403
  25.  
  26. /* Message-Nummern für die Kommunikation zwischen Venus und
  27.  * verschiedenen Accesories.
  28.  * Sollten in Nachrichten Pfade oder Dateinamen vorkommen, so
  29.  * muß immer der absolute Pfad angegeben werden (also mit Laufwerk)
  30.  * und alle Buchstaben müssen Großbuchstaben sein. Pfade enden
  31.  * IMMER mit einem Backslash!
  32.  *
  33.  * Nachrichten von Venus beginnen mit VA (Venus -> Accessory).
  34.  * Nachrichten an Venus beginnen mit AV (Accessory -> Venus).
  35.  *
  36.  * Mit AV_PROTOKOLL kann jedes Acc nachfragen, welche Nachrichten
  37.  * verstanden werden (Dies ist ja bei VENUS und GEMINI 
  38.  * unterschiedlich! Es wäre schön, wenn auch andere Programme auf
  39.  * dieses Protokoll reagieren würden. Zumindest AV_SENDKEY ist
  40.  * sicher leicht zu implementieren und ist die einzige Methode, wie
  41.  * über Nachrichten Tastaturdrücke simuliert werden können.
  42.  */
  43.  
  44. /* AV_PROTOKOLL: Mit dieser Nachrichtennummer sollte man bei 
  45.  * anderen Applikationen und auch VENUS/GEMINI nachfragen, ob
  46.  * und welche Nachrichten sie versteht.
  47.  */
  48. #define AV_PROTOKOLL        0x4700
  49. /*
  50.  * Word 6+7: Pointer auf den Accessorynamen, wie er bei
  51.  *           appl_find benutzt werden muß; also 8 Zeichen lang
  52.  *           nullterminiert (char name[9]).
  53.  * Die Bits in den Worten 3, 4 und 5 haben folgende Bedeutung:
  54.  * Word 3:
  55.  * Bit 0:        (VA_SETSTATUS)
  56.  * Bit 1:        (VA_START)
  57.  * Alle anderen Bits sind für Erweiterungen reserviert und sollten
  58.  * daher mit 0 vorbesetzt werden. Das gilt natürlich auch für die
  59.  * Bits in den Worten 4 und 5.
  60.  */
  61.  
  62. /* VA_PROTOSTATUS: Dem Sender von AV_PROTOKOLL wird mitgeteilt, daß
  63.  * der Empfänger etwas von diesem Protokoll weiß. Die Worte 3-7 des
  64.  * Nachrichtenpuffers enthalten die Information, welche Nachrichten
  65.  * verstanden werden. Gesetzte Bits stehen dafür, daß eine Nachricht
  66.  * (Nachrichtengruppe) verstanden werden. 
  67.  */
  68. #define VA_PROTOSTATUS        0x4701
  69. /*
  70.  * Word 6+7: Pointer auf den Programmnamen, wie er bei
  71.  *           appl_find benutzt werden muß; also 8 Zeichen lang
  72.  *           nullterminiert (char name[9]).
  73.  * Die Bits in den Worten 3, 4 und 5 haben folgende Bedeutung:
  74.  * Word 3:
  75.  * Bit 0        (AV_SENDKEY)
  76.  * Bit 1        (AV_ASKFILEFONT)
  77.  * Bit 2        (AV_ASKCONFONT, AV_OPENCONSOLE)
  78.  * Bit 3        (AV_ASKOBJECT)
  79.  * Bit 4        (AV_OPENWIND)
  80.  * Bit 5        (AV_STARTPROG)
  81.  * Bit 6        (AV_ACCWINDOPEN, AV_ACCWINDCLOSED)
  82.  * Bit 7        (AV_STATUS, AV_GETSTATUS)
  83.  * Alle anderen Bits sind für Erweiterungen reserviert und sollten
  84.  * daher mit 0 vorbesetzt werden. Das gilt natürlich auch für die
  85.  * Bits in den Worten 4 und 5.
  86.  *
  87.  * AV_SENDKEY kann sicher jeder leicht in seine Programme einbauen.
  88.  * Bei AV_OPENWIND könnte ein Hauptprogramm auch seine "normale"
  89.  * Routine zum Öffnen eines Dokumentes anwerfen und dabei den
  90.  * übergebenen Pfad benutzen. Dies ist zusammen mit der Benutzung
  91.  * von TreeView sicher eine einfache Art, Dateien aus anderen Ordnern
  92.  * oder Laufwerken zu laden.
  93.  */
  94.  
  95. /* AV_GETSTATUS: Ein Accessory erfragt bei Venus den aktuellen
  96.  * Status, den es Venus mit AV_STATUS mal gegeben hat.
  97.  */
  98. #define AV_GETSTATUS        0x4703
  99.  
  100. /* AV_STATUS: Ein Accessory kann Venus seinen Status mitteilen,
  101.  * der dann von Venus im INF-File gespeichert wird und mit
  102.  * AV_GETSTATUS wieder abgerufen werden kann.
  103.  * Zuvor MUSS es sich aber mit AV_PROTOKOLL anmelden!
  104.  * Word 3+4: Pointer auf einen String, der keine Steuerzeichen
  105.  *           enthalten darf und nicht länger als 256 Zeichen
  106.  *           sein darf. Dieser Pointer darf allerdings NULL sein.
  107.  */
  108. #define AV_STATUS            0x4704
  109.  
  110. /* VA_SETSTATUS: Venus teilt dem Accessory den abgespeicherten
  111.  * Status bei Nachfrage durch AV_GETSTATUS mit. Dieser kann dann 
  112.  * von einem Accessory gesetzt werden.
  113.  * Word 3+4: Pointer auf einen String, der keine Steuerzeichen
  114.  *           enthält.
  115.  *           Dieser Pointer kann allerdings NULL sein, dann war
  116.  *           kein Status gespeichert.
  117.  */
  118. #define VA_SETSTATUS        0x4705
  119.  
  120. /* AV_SENDKEY: Ein Acc sendet VENUS/GEMINI einen Tastaturevent, den
  121.  * es selber vielleicht nicht versteht.
  122.  * Word 3 = Tastaturstatus                 ev_mmokstate
  123.  * Word 4 = Scancode der gedrückten Taste  ev_mkreturn
  124.  */
  125. #define    AV_SENDKEY            0x4710
  126.  
  127. /* VA_START: Accessory wird aktiviert. Word 3 + 4 enthalten einen
  128.  * Pointer auf eine Kommandozeile, der auch NULL sein kann.
  129.  * In der Kommandozeile stehen Pfade oder Dateinamen.
  130.  */
  131. #define VA_START            0x4711
  132.  
  133. /* AV_ASKFILEFONT: Frage nach dem eingestellten Zeichensatz
  134.  * für Dateinamen.
  135.  */
  136. #define AV_ASKFILEFONT        0x4712
  137.  
  138. /* VA_FILEFONT: Gibt den derzeit eingestellten Zeichensatz.
  139.  * Word 3 = Dateifontnummer (font id)
  140.  * Word 4 = Dateifontgröße (in points)
  141.  */
  142. #define VA_FILEFONT            0x4713
  143.  
  144. /* (Nur Gemini) AV_ASKCONFONT: Frage nach dem eingestellten 
  145.  * Zeichensatz für das Console-Fenster.
  146.  */
  147. #define AV_ASKCONFONT        0x4714
  148.  
  149. /* VA_CONFONT: Gibt den derzeit eingestellten Zeichensatz.
  150.  * Word 3 = Consolefontnummer (font id)
  151.  * Word 4 = Consolefontgröße (in points)
  152.  */
  153. #define VA_CONFONT            0x4715
  154.  
  155. /* AV_ASKOBJECT: Fragt nach dem derzeit selektiertem Objekt.
  156.  * Es wird der Name des derzeit selektierten Objektes zurückgegeben.
  157.  * Ist kein Objekt selektiert, so ist der String leer.
  158.  * Sind mehrere Objekte selektiert, so sind ihre Namen durch Leer-
  159.  * zeichen getrennt.
  160.  */
  161. #define AV_ASKOBJECT    0x4716
  162.  
  163. /* VA_OBJECT: Gibt Namen der derzeit selektierten Objekte.
  164.  * Aufbau wie bei VA_START
  165.  */
  166. #define VA_OBJECT        0x4717
  167.  
  168. /* (Nur Gemini)AV_OPENCONSOLE: Venus soll das Console-Fenster öffnen.
  169.  * Ist es schon offen, so wird es nach vorne gebracht. Diese Aktion
  170.  * ist vor allen Dingen sinnvoll, wenn ein Accessory ein TOS-Programm
  171.  * mittels der system()-Funktion starten will (Warnung: Auf keinen
  172.  * Fall darf ein GEM-Programm von einem Accessory via system() 
  173.  * gestartet werden! (siehe auch AV_STARTPROG)
  174.  * Auch sollte diese Nachricht nur auf ausdrücklichen Wunsch des
  175.  * Benutzers gebraucht werden, da es ihn sonst nur verwirren kann.
  176.  *
  177.  * ACHTUNG: Diese Nachricht steht nur in Gemini.app zur Verfügung.
  178.  */
  179. #define AV_OPENCONSOLE    0x4718
  180.  
  181. /* VA_CONSOLEOPEN: Gibt zurück, ob das Console-Fenster nach vorne
  182.  * gebracht worden ist. Word 3 == 0 (nein) != 0 (ja)
  183.  */
  184. #define VA_CONSOLEOPEN    0x4719
  185.  
  186. /* AV_OPENWIND: Venus soll ein Datei-Fenster öffnen.
  187.  * Dies sollte auch nur geschehen, wenn die Ursache für den
  188.  * Benutzer ersichtlich ist.
  189.  * Word 3+4 (Pointer) Pfad für das Fenster (s.o.).
  190.  * Word 5+6 (Pointer) Wildcard für darzustellende Dateien.
  191.  */
  192. #define AV_OPENWIND        0x4720
  193.  
  194. /* VA_WINDOPEN: Gibt an, ob das Fenster geöffnet werden konnte.
  195.  * siehe VA_CONSOLEOPEN
  196.  */
  197. #define VA_WINDOPEN        0x4721
  198.  
  199. /* AV_STARTPROG: Venus soll ein Programm starten. Hierbei
  200.  * werden die angemeldeten Applikationen der Venus mit
  201.  * berücksichtigt. Man kann also auch eine Datei angeben, für
  202.  * die Venus dann ein Programm sucht.
  203.  * Word 3+4 (Pointer) Programmname mit kompletten Pfad
  204.  * Word 5+6 (Pointer) Kommandozeile (kann NULL sein)
  205.  */
  206. #define AV_STARTPROG    0x4722
  207.  
  208. /* VA_PROGSTART: Gibt an, ob Venus das Programm startet.
  209.  * Word 3 == 0: nicht gestartet, != 0 gestartet
  210.  * Im Allgemeinen wird das Acc. im Fehlerfall sofort eine
  211.  * Nachricht bekommen. Wenn das Programm aber gestartet wird, erhält
  212.  * das Acc. diese Nachricht erst nach dem Start des Programms, da
  213.  * die Routine, die den Pexec macht nicht mehr wissen kann, das ein
  214.  * Acc. noch schnell eine Nachricht bekommen muß. Bei einem GEM-
  215.  * Programm, kann man der Erfolg auch an dem AC_CLOSE erkennen.
  216.  * Auch ist die Fehlererkennung nicht optimal. Der Rückgabewert weist
  217.  * auch nicht aus, das das Programm fehlerfrei gelaufen ist.
  218.  */
  219. #define VA_PROGSTART    0x4723
  220.  
  221. /* AV_ACCWINDOPEN: Mit dieser Nachricht kann ein Acc Venus mitteilen, daß
  222.  * es ein Fenster geöffnet hat.
  223.  * Word 3 AES-Handle des geöffneten Fensters
  224.  */
  225. #define AV_ACCWINDOPEN    0x4724
  226.  
  227. /* VA_DRAGACCWIND: Venus teilt dem Acc mit, daß Objekte auf eines seiner
  228.  * mittels AV_ACCWINDOPEN angemeldeten Fenster gezogen worden sind.
  229.  * Word 3   AES-Handle des Fensters
  230.  * Word 4   X-Position der Maus
  231.  * Word 5   Y-Position der Maus
  232.  * Word 6+7 Pointer auf einen String, der die Namen der Objekte enthält.
  233.  */
  234. #define VA_DRAGACCWIND    0x4725
  235.  
  236. /* AV_ACCWINDCLOSED: Acc teilt Venus mit, daß sein Fenster geschlossen
  237.  * wurde. Dies braucht das Acc nur in dem Fall zu tun, wenn es selbst das
  238.  * Fenster schließt. Bekommt es eine AC_CLOSE Mitteilung vom AES, so weiß
  239.  * Venus schon, daß alle Fenster weg sind.
  240.  * Word 3   AES-Handle des Fensters
  241.  */
  242. #define AV_ACCWINDCLOSED    0x4726
  243.  
  244. #endif